//package common.redis;
//
//
//import com.jiuzhi.ssm.common.PropertiesLoader;
//import redis.clients.jedis.Jedis;
//import redis.clients.jedis.JedisPool;
//import redis.clients.jedis.JedisPoolConfig;
//
//import java.util.List;
//import java.util.Map;
//
//
//public final class RedisUtil {
//
//    //Redis的端口号
//    private static int PORT = 6379;
//    //访问密码
//    private static String AUTH = null;
//    //可用连接实例的最大数目，默认值为8；
//    //如果赋值为-1，则表示不限制；如果pool已经分配了maxActive个jedis实例，则此时pool的状态为exhausted(耗尽)。
//    private static int MAX_TOTAL = 7;
//
//    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例，默认值也是8。
//    private static int MAX_IDLE = 7;
//
//    //等待可用连接的最大时间，单位毫秒，默认值为-1，表示永不超时。如果超过等待时间，则直接抛出JedisConnectionException；
//    private static int MAX_WAIT = 10000;
//
//    private static int TIMEOUT = 10000;
//
//    //在borrow一个jedis实例时，是否提前进行validate操作；如果为true，则得到的jedis实例均是可用的；
//    private static boolean TEST_ON_BORROW = true;
//
//    private static JedisPool jedisPool = null;
//
//
////    private static String path="src/main/resources/config.properties";
//
//    static PropertiesLoader loader = new PropertiesLoader("config/QrCode.properties");
//    static String redishost=loader.getProperty("redis.host");
//    public static final int DATABASE =Integer.parseInt(loader.getProperty("redisdb")) ;//数据库
//    /**
//     * 初始化Redis连接池
//     */
//    static {
//
//
//        try {
//
////            Map<String, String>  map =ReadPropertiesUtil.readproperties(path);
//            JedisPoolConfig config = new JedisPoolConfig();
//            config.setMaxTotal(MAX_TOTAL);
//            	// 最小能够保持空闲状态的对象数
//            config.setMinIdle(20);
//            // 最大能够保持空闲状态的对象数
//            config.setMaxIdle(MAX_IDLE);
//            config.setMaxWaitMillis(MAX_WAIT);
//            // 在borrow一个jedis实例时，是否提前进行alidate操作；如果为true，则得到的jedis实例均是可用的；
//            config.setTestOnBorrow(TEST_ON_BORROW);
//            // 在还会给pool时，是否提前进行validate操作
//            config.setTestOnReturn(TEST_ON_BORROW);
//        //jedisPool = new JedisPool(config, "127.0.0.1", PORT, TIMEOUT, AUTH, DATABASE);
//         jedisPool = new JedisPool(config, redishost, PORT, TIMEOUT, AUTH, DATABASE);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    /**
//     * 获取Jedis实例
//     * @return
//     */
//	public synchronized static Jedis getJedis() {
//    	   Jedis jedis = null;
//        try {
//            if (jedisPool != null) {
//            	jedis= jedisPool.getResource();
//                return jedis;
//            } else {
//                return null;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }finally{
//        	jedis.close();
//
//        }
//    }
//
//    /**
//     * 释放jedis资源
//     * @param jedis
//     */
//	public static void returnResource(final Jedis jedis) {
//        if (jedis != null) {
//        	jedis.close();
//        }
//    }
//
//    /**
//	 * 查询数据
//	 */
//	public static String  findStr(String key){
//		Jedis jedis = null;
//		try {
//			jedis = jedisPool.getResource();
//			return jedis.get(key);
//		} catch (Exception e) {
//			e.printStackTrace();
//			return null;
//		}finally{
//			jedis.close();
//        }
//	}
//
//	/**
//	 * 查询特定字符串
//	 */
//	public String findSubStr(String key,Integer startOffset,Integer endOffset){
//		Jedis jedis = null;
//		try {
//			jedis = jedisPool.getResource();
//			return jedis.getrange(key, startOffset, endOffset);
//		} catch (Exception e) {
//			e.printStackTrace();
//			return null;
//		}finally{
//			jedis.close();
//        }
//	}
//	 /**
//     * 向缓存中设置字符串内容 新增数据|修改
//     * @param key key
//     * @param value value
//     * @return
//     * @throws Exception
//     */
//	public static int addStr(String key,String value) throws Exception{
//        Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//            jedis.set(key, value);
//            return 0;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return -1;
//        }finally{
//			jedis.close();
//        }
//    }
//
//	/**
//     * 向缓存中设置字符串内容 新增数据|修改
//     * @param key key
//     * @param value value
//     * @return
//     * @throws Exception
//     */
//	public static void addStrExSeconds(String key,int seconds,String value) throws Exception{
//        Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//            jedis.setex(key, seconds, value);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }finally{
//			jedis.close();
//        }
//    }
//
//	/**
//     * 删除缓存中得对象，根据key
//     * @param key
//     * @return
//     */
//	public static int delStr(String key){
//        Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//            jedis.del(key);
//            return 0;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return -1;
//        }finally{
//			jedis.close();
//        }
//    }
//	public static int addList(String key,String value) throws Exception{
//        Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//            jedis.lpush(key, value);
//            return 0;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return -1;
//        }finally{
//			jedis.close();
//        }
//    }
//	/**
//	 * 获取List数据
//	 * Author： Huang fengge
//	 * Date:2015年11月27日
//	 * @param key
//	 * @param start
//	 * @param end
//	 * @return
//	 * @throws Exception
//	 * List<String>
//	 */
//	public static List<String> getList(String key,int start,int end) throws Exception{
//        Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//          List<String> list = jedis.lrange(key, start, end);
//            return list;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }finally{
//			jedis.close();
//        }
//
//    }
//	/**
//	 * 存放Map集合
//	 * Author： Huang fengge
//	 * Date:2015年11月27日
//	 * @param key
//	 * @param start
//	 * @param end
//	 * @return
//	 * @throws Exception
//	 * List<String>
//	 */
//	public static String setMap(String key,Map<String,String> map) throws Exception{
//        Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//            return jedis.hmset(key, map);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }finally{
//			jedis.close();
//        }
//    }
//
//	/**
//	 * 获取Map集合
//	 * Author： Huang fengge
//	 * Date:2015年11月27日
//	 * @return
//	 * @throws Exception
//	 * Map<String,String>
//	 */
//	public static List<String> getMap(String key,String hKey) throws Exception{
//	    Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//            List<String> list =  jedis.hmget(key, hKey);
//            return list;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }finally{
//			jedis.close();
//        }
//	}
//
//	/**
//	 * key是否存在
//	 * Author： Huang fengge
//	 * Date:2015年11月27日
//	 * @param key
//	 * @return
//	 * @throws Exception
//	 * boolean
//	 */
//	public static boolean exists(String key){
//	    Jedis jedis = null;
//	    boolean isTrue = false;
//        try {
//            jedis = jedisPool.getResource();
//            isTrue = jedis.exists(key);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }finally{
//			jedis.close();
//        }
//		return isTrue;
//	}
//
//
//	/**
//	 * map里面的hashkey是否存在
//	 * Author： Huang fengge
//	 * Date:2015年12月1日
//	 * @param key
//	 * @return
//	 * @throws Exception
//	 * boolean
//	 */
//	public static boolean hexists(String key,String hashKey) throws Exception{
//	    Jedis jedis = null;
//	    boolean isTrue = false;
//        try {
//            jedis = jedisPool.getResource();
//            isTrue = jedis.hexists(key,hashKey);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }finally{
//			jedis.close();
//        }
//		return isTrue;
//	}
//
//	/**
//	 * map里面的hashkey是否存在
//	 * @return
//	 * @throws Exception
//	 * boolean
//	 */
//	public static int hashSet(String key,String hashKey,String value) throws Exception{
//	    Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//            jedis.hset(key, hashKey, value);
//            return 0;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return 0;
//        }finally{
//			jedis.close();
//        }
//	}
//
//
//
//	/**
//	 * 设置缓存key的过期时间
//	 * Author： Huang fengge
//	 * Date:2015年11月27日
//	 * @param key
//	 * @param milliseconds
//	 * @throws Exception
//	 * void
//	 */
//	public static void pexpire(String key, long milliseconds) throws Exception {
//		Jedis jedis = null;
//		try {
//			jedis = jedisPool.getResource();
//			jedis.pexpire(key, milliseconds);
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			jedis.close();
//		}
//	}
//
//	/**
//	 * 获取list的长度
//	 * Author： Huang fengge
//	 * Date:2015年11月30日
//	 * @return
//	 * @throws Exception
//	 * int
//	 */
//	public static int getListLength(String key)throws Exception {
//		Jedis jedis = null;
//		int len = 0;
//		try {
//			jedis = jedisPool.getResource();
//			long l = jedis.llen(key);
//			return len = (int)l;
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			jedis.close();
//		}
//		return len;
//	}
//
//	/**
//	 * reids获取key的值
//	 * Author： Huang fengge
//	 * Date:2016年3月29日
//	 * @param key
//	 * @return
//	 * String
//	 */
//	public static String get(final String key) {
//		Jedis jedis = null;
//		try {
//			jedis = jedisPool.getResource();
//			return jedis.get(key);
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			jedis.close();
//		}
//		return key;
//	}
//
//	/**
//	 * redis的累加机制
//	 * Author： Huang fengge
//	 * Date:2016年3月29日
//	 * @param key
//	 * @return
//	 * @throws Exception
//	 * int
//	 */
//	public static int incrby(String key,long num) throws Exception {
//		Jedis jedis = null;
//		int len = 0;
//		try {
//			jedis = jedisPool.getResource();
//			long l = jedis.incrBy(key, num);
//			return len = (int) l;
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			jedis.close();
//		}
//		return len;
//	}
//
//	/**
//     * 删除缓存中得对象，根据key
//     * @param key
//     * @param fields
//     * @return
//     */
//	public static int hashDelStr(String hkey,String fields){
//        Jedis jedis = null;
//        try {
//            jedis = jedisPool.getResource();
//            jedis.hdel(hkey, fields);
//            return 0;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return -1;
//        }finally{
//			jedis.close();
//        }
//    }
//
//	/**
//	 * 通过下标和key删除List缓存某一个值
//	 * Author： Huang fengge
//	 * Date:2016年3月29日
//	 * @param key
//	 * @param count
//	 * @param value
//	 * @throws Exception
//	 * void
//	 */
//	public static void lrem(String key,long count,String value)throws Exception{
//		Jedis jedis = null;
//		try {
//			jedis = jedisPool.getResource();
//			jedis.lrem(key, count, value);
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			jedis.close();
//		}
//	}
//	/**
//	 * reids获取列表然后删除这个列表的一个元素
//	 * Author： Huang fengge
//	 * Date:2016年3月29日
//	 * @param key
//	 * @return
//	 * String
//	 */
//	public static String lpopListOne(final String key) {
//		Jedis jedis = null;
//		try {
//			jedis = jedisPool.getResource();
//			return jedis.lpop(key);
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			jedis.close();
//		}
//		return key;
//	}
//	public static void main(String[] args) {
//		   try {
////			   RedisUtil rdu = new RedisUtil();
////			Map<String,String> map = new HashMap<>();
//////			rdu.delStr("USER_RECOMMEND");
////			User user = new User();
////			user.setAvatarEnabled("111");
////			user.setAvatarUrl("22222222");
////			map.put("userName", JsonTool.mapToJson(user));
////			map.put("passWord", "admin");
////			map.put("age", "22");
//////			rdu.setMap("USER_RECOMMEND", map);
////			RedisUtil.exists("USER_RECOMMEND");
//////			rdu.delStr("USER_RECOMMEND");
////			RedisUtil.pexpire("USER_RECOMMEND", 5000);
////			System.out.println(RedisUtil.exists("USER_RECOMMEND"));
////			rdu.delStr("MY_LIST");
////			RedisUtil.addList("MY_LIST", "aaa");
////			RedisUtil.addList("MY_LIST", "bbb");
////			RedisUtil.addList("MY_LIST", "ccc");
////			   String key ="CCC";
////			System.out.println(RedisUtil.incrby(key, 1));
////			   if(!RedisUtil.exists("MY_LIST")){
////
////				   for (int i = 0; i < 10; i++) {
////					   RedisUtil.addList("MY_LIST", String.valueOf(i));
////				   }
////			   }
//
////			RedisUtil.getListLength("MY_LIST");
////			System.out.println(RedisUtil.getListLength("MY_LIST"));
////			RedisUtil.getList("MY_LIST", 0, -1);
//
////			   RedisUtil.addStr("MyString", "11111111111");
////			   RedisUtil.pexpire("MyString", 60000);
////			   User user = new User();
////			   user.setAvatarEnabled("111");
////			   user.setAvatarUrl("222");
////			   user.setGagaId("333");
////			   RedisUtil.addStr("TEST", JsonTool.mapToJson(user));
////			   String str = RedisUtil.findStr("TEST");
////			   System.out.println(str+"...............");
////			   ObjectMapper objectMapper = new ObjectMapper();
////			   User u  = objectMapper.readValue(str, User.class);
////			   System.out.println(u.getAvatarEnabled());
//			   //0.9￥  1.8￥  3.6￥  4.9￥  7.5￥  10￥
//			 /*  String[] str = {"0.9","1.8","3.6","4.9","7.5","10"};
//			   int i=(int)(Math.random()*str.length);
//			   System.out.println(str[i]);*/
//		//	   RedisUtil.addStr("MyString", "11111111111");
//			 System.out.println(findStr("MyString"));
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//
//
//	}
//}